package thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 线程池
 * 线程池是线程的管理类，主要解决两个问题
 * 1:控制线程数量
 * 2:重用线程
 */
public class ThreadPoolDemo {
    public static void main(String[] args) {
        //1.创建一个线程池
        ExecutorService theadPool = Executors.newFixedThreadPool(2);
        //2.指派任务
        for (int i = 0; i < 5; i++) {

            Runnable runnable = () -> {
                Thread thread = Thread.currentThread();
                System.out.println(thread.getName()+"正在执行一个任务");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(thread.getName()+"一个任务执行完毕");
            };
            theadPool.execute(runnable);
            System.out.println("将一个任务交给了线程池");
        }

        //theadPool.shutdown();//shutdown()表示现有任务继续进行,不在接收新任务了
        theadPool.shutdownNow();//shutdownNow()表示立刻终止所有任务,包括正在进行的任务和排队的任务
        System.out.println("线程池停止了");
    }
}
